package yl.hs.bmipfull.daos.salemanage;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import yl.hs.bmipfull.daos.BaseDao;
import yl.hs.bmipfull.pojo.salemanage.LinkerInfoEntity;

import java.util.List;
import java.util.Map;

/**
* 作用:  联系人持久层接口<br/>
* 创建时间: 2021年05月19日 11时16分38秒 <br/>
* @author 谢东
*/
@Repository
public interface ILinkerInfoDao extends BaseDao<LinkerInfoEntity>{

    /**
     *  查询联系人信息
     *  @param map 查询条件 {@link LinkerInfoEntity}
     *  @return 联系人-List<{@link LinkerInfoEntity}>
     */
    List<LinkerInfoEntity> queryList(@Param("map") Map<String, Object> map);

     /**
      *  分页查询联系人信息
      *  @param map 查询条件 {@link LinkerInfoEntity}
      *  @return 站内信息-List<{@link LinkerInfoEntity}>
      */
    List<LinkerInfoEntity> queryPage(@Param("map") Map<String, Object> map,String[] tagSNArray ,@Param("filters") List<Map<String,Object>> filters);

    /**
     * 根据查询条件统计数据数量
     * @param query 查询条件
     * @return 数据数量
     */
    Integer queryCountByCondition(@Param("map") Map<String,Object> query,String[] tagSNArray,@Param("filters") List<Map<String,Object>> filters);
    /**
     * 根据联系人编号修改状态
     * @param snArray 联系人信息编号数组
     * @param state
     * @return
     */
    Integer changeStateBySn(String[] snArray,short state);

    /***
     *
     * @param customerSN
     * @return
     */
    List<LinkerInfoEntity> queryListByCustomerSN(String customerSN);

    /**
     * 查询联系人姓名
     * @param sn 联系人姓名
     * @return 联系人姓名
     */
    String findLinkerNameBySN(String sn);

    /**
     * 根据联系人编号获取联系人信息
     * @param snList 联系人编号集合
     * @return 联系人集合
     */
    List<LinkerInfoEntity> findLinkerBySN(@Param("snList") List<String> snList);

    /**
     * 根据主数据编号和名称查询数据行数
     * @param custSn 主数据编号
     * @param fullName 名称
     * @return 数据行数
     */
    Integer findLinkerCountByCustSnAndFullName(String custSn,String fullName);

    /**
     * 获取客户首选联系人
     * @param customerSN 客户编号
     * @return 联系人信息
     */
    LinkerInfoEntity findCustomerLinker(@Param("customerSN") String customerSN);

    List<LinkerInfoEntity> findCustomerLinkerList(@Param("customerSN") String customerSN);

    /**
     * 根据用户信息获取
     * @param mobilPhone 用户手机号
     * @return 联系人信息
     */
    LinkerInfoEntity findUserByAccount(@Param("mobilPhone")String mobilPhone);

    @Select("select * from linker_info where openid=#{openid} and state>=0 limit 1")
    LinkerInfoEntity getByOpenid(String openid);
}